<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // https://leetcode-cn.com/problems/two-sum/
        /** 
         * 给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出和为目标值 target 的那两个整数，并返回它们的数组下标。
         * 你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。
         * 你可以按任意顺序返回答案。 **/

        //  示例1
        // 输入：nums = [2,7,11,15], target = 9
        // 输出：[0,1]
        // 解释：因为 nums[0] + nums[1] == 9 ，返回 [0, 1] 。

        // 这题的核心是用map的键来存数组的值，然后找键

        var twoSum = function (nums, target) {
            var map = new Map();
            for (var i = 0; i < nums.length; i++) {
                console.log(map.get(target - nums[i]));
                if (map.has(target - nums[i])) {
                    return [map.get(target - nums[i]), i];
                } else {
                    // key是数值值， value是数组下标
                    map.set(nums[i], i);
                }
            }
        }

        // var arr = twoSum([3, 2, 4], 6);
    </script>

    <script>

        var twoSum1 = function (nums, target) {
            var map = new Map();

            for (let j = 0; j < nums.length; j++) {
                if (map.has(target - nums[j])) {
                    return [j, map.get(target - nums[j])]
                } else {
                    map.set(nums[j], j)
                }
            }
        }

        var arr1 = twoSum1([3, 2, 4], 6)
    </script>
</body>

</html>